package com.ruoyi.system.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.system.entity.AbdulBaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.Date;

/**
 * 门店设置对象 store_settings
 *
 * @author ruoyi
 * @date 2025-05-07
 */
@ApiModel("门店设置对象")
public class StoreSettings extends AbdulBaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 门店的唯一标识符，自动递增 */
    @ApiModelProperty("主键ID")
    private Long id;

    /** 门店名称 */
    @ApiModelProperty("门店名称")
    @Excel(name = "门店名称")
    private String storeName;

    /** 门店负责人姓名 */
    @ApiModelProperty("门店负责人姓名")
    @Excel(name = "门店负责人姓名")
    private String storeManager;

    /** 门店地址 */
    @ApiModelProperty("门店地址")
    @Excel(name = "门店地址")
    private String storeAddress;

    /** 套餐名称 */
    @ApiModelProperty("套餐名称")
    @Excel(name = "套餐名称")
    private String packageName;

    /** 套餐到期时间 */
    @ApiModelProperty("套餐到期时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "套餐到期时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date packageExpiryDate;

    /** 剩余短信数量 */
    @ApiModelProperty("剩余短信数量")
    @Excel(name = "剩余短信数量")
    private Long remainingSmsCount;

    /** 门店定位，可以是地理位置的字符串描述，或者根据需要使用其他数据类型 */
    @ApiModelProperty("门店定位")
    @Excel(name = "门店定位，可以是地理位置的字符串描述，或者根据需要使用其他数据类型")
    private String storeLocation;

    /** 小程序是否支持显示该门店 */
    @ApiModelProperty("小程序是否支持显示该门店")
    @Excel(name = "小程序是否支持显示该门店")
    private Integer supportMiniProgram;

    /** 营业时间，如"9:00-18:00"这样的格式 */
    @ApiModelProperty("营业时间")
    @Excel(name = "营业时间")
    private String businessHours;

    /** 营业状态，如“营业中”、“暂停营业”等 */
    @ApiModelProperty("营业状态")
    @Excel(name = "营业状态，如“营业中”、“暂停营业”等")
    private String businessStatus;

    /** 日结时间 */
    @ApiModelProperty("日结时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "日结时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date dailySettlementTime;

    /** 标签名称（如果每个门店只有一个主要标签） */
    @ApiModelProperty("标签名称")
    @Excel(name = "标签名称", readConverterExp = "如=果每个门店只有一个主要标签")
    private String tagName;

    /** 门店WiFi信息 */
    @ApiModelProperty("门店WiFi信息")
    @Excel(name = "门店WiFi信息")
    private String storeWifi;

    /** 门店标签，多个标签可以用逗号分隔的字符串存储，或者考虑使用JSON格式 */
    @ApiModelProperty("门店标签")
    @Excel(name = "门店标签，多个标签可以用逗号分隔的字符串存储，或者考虑使用JSON格式")
    private String storeTags;

    /** 列表图片URL或路径 */
    @ApiModelProperty("列表图片URL或路径")
    @Excel(name = "列表图片URL或路径")
    private String listImage;

    /** 门店图片URL或路径 */
    @ApiModelProperty("门店图片URL或路径")
    @Excel(name = "门店图片URL或路径")
    private String storeImage;

    /** 详情图片URL或路径 */
    @ApiModelProperty("详情图片URL或路径")
    @Excel(name = "详情图片URL或路径")
    private String detailImage;

    /** 平面图片URL或路径 */
    @ApiModelProperty("平面图片URL或路径")
    @Excel(name = "平面图片URL或路径")
    private String floorPlanImage;

    /** 门店简介 */
    @ApiModelProperty("门店简介")
    @Excel(name = "门店简介")
    private String storeBrief;

    /** 门店介绍，可以是更详细的文本 */
    @ApiModelProperty("门店介绍")
    @Excel(name = "门店介绍，可以是更详细的文本")
    private String storeIntroduction;

    /** 说明或备注 */
    @ApiModelProperty("说明或备注")
    @Excel(name = "说明或备注")
    private String description;

    /** 街道地址，与store_address可能有所重叠，但提供更具体的街道信息 */
    @ApiModelProperty("街道地址")
    @Excel(name = "街道地址，与store_address可能有所重叠，但提供更具体的街道信息")
    private String streetAddress;

    /** 续费员工数 */
    @ApiModelProperty("续费员工数")
    @Excel(name = "续费员工数")
    private Long renewalEmployeeCount;

    /** 续费桌台数 */
    @ApiModelProperty("续费桌台数")
    @Excel(name = "续费桌台数")
    private Long renewalTableCount;

    /** 门店行业 */
    @ApiModelProperty("门店行业")
    @Excel(name = "门店行业")
    private String storeIndustry;

    /** 手机号 */
    @ApiModelProperty("手机号")
    @Excel(name = "手机号")
    private String phone;

    /** WiFi密码 */
    @ApiModelProperty("WiFi密码")
    @Excel(name = "WiFi密码")
    private String wifiPassword;

    /**
     * 用户id
     */
    @ApiModelProperty("用户id")
    @Excel(name = "用户id")
    private Long userId;


    // 添加一个只用于序列化的字符串id字段
    @ApiModelProperty("字符串类型的主键ID")
    @JsonProperty("id")
    public String getStringId() {
        return id != null ? String.valueOf(id) : null;
    }

    public Long getUserId() {return userId;}

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    // 隐藏原始id字段
    @JsonIgnore
    public Long getId()
    {
        return id;
    }

    public void setStoreName(String storeName)
    {
        this.storeName = storeName;
    }

    public String getStoreName()
    {
        return storeName;
    }

    public void setStoreManager(String storeManager)
    {
        this.storeManager = storeManager;
    }

    public String getStoreManager()
    {
        return storeManager;
    }

    public void setStoreAddress(String storeAddress)
    {
        this.storeAddress = storeAddress;
    }

    public String getStoreAddress()
    {
        return storeAddress;
    }

    public void setPackageName(String packageName)
    {
        this.packageName = packageName;
    }

    public String getPackageName()
    {
        return packageName;
    }

    public void setPackageExpiryDate(Date packageExpiryDate)
    {
        this.packageExpiryDate = packageExpiryDate;
    }

    public Date getPackageExpiryDate()
    {
        return packageExpiryDate;
    }

    public void setRemainingSmsCount(Long remainingSmsCount)
    {
        this.remainingSmsCount = remainingSmsCount;
    }

    public Long getRemainingSmsCount()
    {
        return remainingSmsCount;
    }

    public void setStoreLocation(String storeLocation)
    {
        this.storeLocation = storeLocation;
    }

    public String getStoreLocation()
    {
        return storeLocation;
    }

    public void setSupportMiniProgram(Integer supportMiniProgram)
    {
        this.supportMiniProgram = supportMiniProgram;
    }

    public Integer getSupportMiniProgram()
    {
        return supportMiniProgram;
    }

    public void setBusinessHours(String businessHours)
    {
        this.businessHours = businessHours;
    }

    public String getBusinessHours()
    {
        return businessHours;
    }

    public void setBusinessStatus(String businessStatus)
    {
        this.businessStatus = businessStatus;
    }

    public String getBusinessStatus()
    {
        return businessStatus;
    }

    public void setDailySettlementTime(Date dailySettlementTime)
    {
        this.dailySettlementTime = dailySettlementTime;
    }

    public Date getDailySettlementTime()
    {
        return dailySettlementTime;
    }

    public void setTagName(String tagName)
    {
        this.tagName = tagName;
    }

    public String getTagName()
    {
        return tagName;
    }

    public void setStoreWifi(String storeWifi)
    {
        this.storeWifi = storeWifi;
    }

    public String getStoreWifi()
    {
        return storeWifi;
    }

    public void setStoreTags(String storeTags)
    {
        this.storeTags = storeTags;
    }

    public String getStoreTags()
    {
        return storeTags;
    }

    public void setListImage(String listImage)
    {
        this.listImage = listImage;
    }

    public String getListImage()
    {
        return listImage;
    }

    public void setStoreImage(String storeImage)
    {
        this.storeImage = storeImage;
    }

    public String getStoreImage()
    {
        return storeImage;
    }

    public void setDetailImage(String detailImage)
    {
        this.detailImage = detailImage;
    }

    public String getDetailImage()
    {
        return detailImage;
    }

    public void setFloorPlanImage(String floorPlanImage)
    {
        this.floorPlanImage = floorPlanImage;
    }

    public String getFloorPlanImage()
    {
        return floorPlanImage;
    }

    public void setStoreBrief(String storeBrief)
    {
        this.storeBrief = storeBrief;
    }

    public String getStoreBrief()
    {
        return storeBrief;
    }

    public void setStoreIntroduction(String storeIntroduction)
    {
        this.storeIntroduction = storeIntroduction;
    }

    public String getStoreIntroduction()
    {
        return storeIntroduction;
    }

    public void setDescription(String description)
    {
        this.description = description;
    }

    public String getDescription()
    {
        return description;
    }

    public void setStreetAddress(String streetAddress)
    {
        this.streetAddress = streetAddress;
    }

    public String getStreetAddress()
    {
        return streetAddress;
    }

    public void setRenewalEmployeeCount(Long renewalEmployeeCount)
    {
        this.renewalEmployeeCount = renewalEmployeeCount;
    }

    public Long getRenewalEmployeeCount()
    {
        return renewalEmployeeCount;
    }

    public void setRenewalTableCount(Long renewalTableCount)
    {
        this.renewalTableCount = renewalTableCount;
    }

    public Long getRenewalTableCount()
    {
        return renewalTableCount;
    }

    public void setStoreIndustry(String storeIndustry)
    {
        this.storeIndustry = storeIndustry;
    }

    public String getStoreIndustry()
    {
        return storeIndustry;
    }

    public String getWifiPassword() {
        return wifiPassword;
    }

    public void setWifiPassword(String wifiPassword) {
        this.wifiPassword = wifiPassword;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("storeName", getStoreName())
                .append("storeManager", getStoreManager())
                .append("storeAddress", getStoreAddress())
                .append("packageName", getPackageName())
                .append("packageExpiryDate", getPackageExpiryDate())
                .append("remainingSmsCount", getRemainingSmsCount())
                .append("storeLocation", getStoreLocation())
                .append("supportMiniProgram", getSupportMiniProgram())
                .append("businessHours", getBusinessHours())
                .append("businessStatus", getBusinessStatus())
                .append("dailySettlementTime", getDailySettlementTime())
                .append("tagName", getTagName())
                .append("storeWifi", getStoreWifi())
                .append("storeTags", getStoreTags())
                .append("listImage", getListImage())
                .append("storeImage", getStoreImage())
                .append("detailImage", getDetailImage())
                .append("floorPlanImage", getFloorPlanImage())
                .append("storeBrief", getStoreBrief())
                .append("storeIntroduction", getStoreIntroduction())
                .append("description", getDescription())
                .append("streetAddress", getStreetAddress())
                .append("renewalEmployeeCount", getRenewalEmployeeCount())
                .append("renewalTableCount", getRenewalTableCount())
                .append("storeIndustry", getStoreIndustry())
                .append("phone",getPhone())
                .append("wifiPassword",getWifiPassword())
                .append("userId", getUserId())
                .append("createTime",getCreateTime())
                .append("updateTime",getUpdateTime())
                .toString();
    }
}

